JasmineJS এ clock() এবং টিমার ফাংশনগুলো ব্যবহার করে আপনি সময় সম্পর্কিত কার্যক্রম এবং অ্যাসিঙ্ক্রোনাস টেস্টিংকে আরো ভালোভাবে নিয়ন্ত্রণ করতে পারেন। এই ফাংশনগুলো মূলত টাইমার ফাংশন এবং টাইম সম্পর্কিত কোডের আচরণ পরীক্ষা করতে ব্যবহৃত হয়।
JasmineJS এ clock() ব্যবহার করে আপনি setTimeout(), setInterval(), Date() এর মতো টাইমার ফাংশনগুলোর কার্যকারিতা পরীক্ষা করতে পারেন এবং তাদের গতিকে নিয়ন্ত্রণ করতে পারেন। এতে, আপনি অ্যাসিঙ্ক্রোনাস কোডের সঠিকতা পরীক্ষা করতে সহজে সময় নিয়ন্ত্রণ করতে পারবেন।
clock() ফাংশন
JasmineJS এর clock() ফাংশনটি টাইমার এবং ডেটা সম্পর্কিত ফাংশনগুলো মক (mock) করতে এবং সময় নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এটি সাধারণত setTimeout(), setInterval(), এবং Date() এর মতো ফাংশনের গতিকে সিমুলেট করতে ব্যবহৃত হয়।
clock() এর ব্যবহার
- Clock ইনস্ট্যান্স তৈরি করা:
jasmine.clock()কল করার মাধ্যমে আপনি একটি clock ইনস্ট্যান্স তৈরি করতে পারবেন। - টেস্ট চলাকালীন সময় নিয়ন্ত্রণ: এটি ব্যবহার করে আপনি টাইমার ফাংশনের সময়ের গতিকে নিয়ন্ত্রণ করতে পারেন, যেমন টাইমআউট বা ইন্টারভ্যালের সময় থামিয়ে রাখা বা এগিয়ে নিয়ে যাওয়া।
উদাহরণ:
describe("Timer Functions with Jasmine Clock", function() {
let callback;
beforeEach(function() {
// Clock এর ইনস্ট্যান্স তৈরি করা
jasmine.clock().install();
callback = jasmine.createSpy("callback"); // স্পাই তৈরি করা
});
afterEach(function() {
jasmine.clock().uninstall(); // টেস্ট শেষে clock এর ইনস্ট্যান্স আনইনস্টল করা
});
it("should call callback after timeout", function() {
setTimeout(function() {
callback();
}, 1000);
// সময়কে দ্রুত এগিয়ে নেওয়া (১০০০ মিলিসেকেন্ডের আগে)
jasmine.clock().tick(1000);
expect(callback).toHaveBeenCalled(); // কলব্যাক ফাংশনটি এক্সপেক্ট করা
});
});
এখানে:
jasmine.clock().install(): এটি clock ইনস্ট্যান্স তৈরি করে এবং টাইমার ফাংশনগুলোকে মক করে।jasmine.clock().tick(1000): এটি ১০০০ মিলিসেকেন্ড (১ সেকেন্ড) সময় এগিয়ে নিয়ে যায়, ফলেsetTimeout()দ্রুত চলে এবংcallbackফাংশন কল হয়।jasmine.clock().uninstall(): টেস্ট শেষ হলে clock ইনস্ট্যান্সটি আনইনস্টল করা হয়।
setInterval() এবং setTimeout() এর সাথে Clock
Jasmine এর clock() ব্যবহার করে আপনি setInterval() এবং setTimeout() এর টাইমিং এবং আচরণ নিয়ন্ত্রণ করতে পারেন।
setInterval() এর উদাহরণ:
describe("setInterval with Jasmine Clock", function() {
let callback;
beforeEach(function() {
jasmine.clock().install();
callback = jasmine.createSpy("callback");
});
afterEach(function() {
jasmine.clock().uninstall();
});
it("should call callback every second", function() {
setInterval(function() {
callback();
}, 1000);
jasmine.clock().tick(3000); // ৩ সেকেন্ড (৩ বার কলব্যাক হওয়া উচিত)
expect(callback.calls.count()).toBe(3); // কলব্যাক ৩ বার কল হয়েছে কিনা
});
});
এখানে:
setInterval()প্রতিটি সেকেন্ডে কলব্যাক ফাংশনটিকে চালু করে।jasmine.clock().tick(3000)এটি ৩ সেকেন্ড (৩টি ১০০০ মিলিসেকেন্ড) সময় এগিয়ে নিয়ে আসে, ফলেcallbackফাংশনটি তিনবার কল হয়।
Date() এর সাথে Clock
Jasmine এর clock() ব্যবহার করে আপনি Date() অবজেক্টের সময়ও নিয়ন্ত্রণ করতে পারেন। এইভাবে, আপনি সময় সম্পর্কিত ফাংশনগুলো পরীক্ষা করতে পারবেন যেমন, কোডের নির্দিষ্ট সময় বা তারিখে কোন কাজ করা হচ্ছে কিনা।
Date() এর উদাহরণ:
describe("Date with Jasmine Clock", function() {
let clock;
beforeEach(function() {
clock = jasmine.clock().install();
});
afterEach(function() {
clock.uninstall();
});
it("should mock Date to return a specific time", function() {
clock.mockDate(new Date(2024, 0, 1)); // ২০২৪ সালের ১ জানুয়ারি সময় সেট করা
const now = new Date();
expect(now.getFullYear()).toBe(2024);
expect(now.getMonth()).toBe(0); // জানুয়ারি মাস (০)
expect(now.getDate()).toBe(1); // ১ জানুয়ারি
});
});
এখানে:
clock.mockDate(new Date(2024, 0, 1)): এটিDate()অবজেক্টকে মক করে এবং2024-01-01দিন সময় হিসেবে সেট করে। এরপর,nowভেরিয়েবলটি তখন ২০২৪ সালের ১ জানুয়ারি হবে, যা আপনি যাচাই করতে পারেন।
সারাংশ
JasmineJS এর clock() এবং Timer Functions টাইমার ও সময় সম্পর্কিত ফাংশনগুলো নিয়ন্ত্রণ করার জন্য একটি শক্তিশালী সরঞ্জাম। এর মাধ্যমে আপনি setTimeout(), setInterval(), এবং Date() এর সময় নিয়ন্ত্রণ করতে পারেন এবং এগুলোর আচরণকে সঠিকভাবে মক বা সিমুলেট করতে পারেন।
- clock() ফাংশনটি টাইমার বা সময় সম্পর্কিত ফাংশনগুলোর গতিকে নিয়ন্ত্রণ করতে সাহায্য করে।
- jasmine.clock().install(): clock ইনস্ট্যান্স তৈরি করে।
- jasmine.clock().uninstall(): clock ইনস্ট্যান্স আনইনস্টল করে।
- jasmine.clock().tick(ms): টাইমকে নির্দিষ্ট মিলিসেকেন্ড এগিয়ে নেয়।
এই ফাংশনগুলোর মাধ্যমে আপনি অ্যাসিঙ্ক্রোনাস কোডের সঠিকতা পরীক্ষা করতে সহজে সময় নিয়ন্ত্রণ করতে পারবেন, যা টেস্টিং প্রক্রিয়াকে আরো নির্ভুল এবং কার্যকর করে তোলে।
Read more